Amazon ForecastのDeepAR+で追加された新しいハイパーパラメータを確認する
データアナリティクス事業本部の貞松です。 閏日の滑り込み投稿です。
Amazon Forecastで使用可能な時系列予測アルゴリズムの一つであるDeepAR+に対して、設定可能なハイパーパラメータが追加されました。これにより、トレーニング時間の短縮、モデルの安定性と精度の向上を目的としたチューニングが可能となります。
DeepAR+ でのサポートが始まった新しいハイパーパラメータを活用して、Amazon Forecast のトレーニング時間を短縮し、モデルの安定性と精度を向上させる
今回はForecastのDeepAR+で設定可能なハイパーパラメータのおさらいと新しく追加になったハイパーパラメータについて確認します。
従来のForecastのDeepAR+で設定可能なハイパーパラメータ
learning_rate
概要
学習率。 大きい値を設定すると学習が早く進むが、更新幅が大きくなり学習が安定せず、最適な結果に収束しにくくなります。 小さい値を設定すると学習の進みが遅くなるが、小さい幅で更新することを繰り返すので学習が安定し、最適な結果に収束しやすくなります。
有効な値
正の浮動小数点数
一般的な値
0.0001~0.1
デフォルト値
0.001
context_length
概要
予測を生成する前にモデルが読み込む時間ポイントの数(予測モデルの学習時にどの範囲のデータ使用するか) このパラメータの値は、prediction_length(どのくらい先まで予測するか、期間の長さを設定)とほぼ同じである必要があります(短すぎてはいけない)
有効な値
正の整数
一般的な値
ceil(0.1 * prediction_length) to min(200, 10 * prediction_length)
デフォルト値
2 * prediction_length
num_layers
概要
Recurrent Neural Network(以下RNN)の隠れ層の数。 多いほど複雑な関数を近似できます(単純なパターンでない複雑な予測ができます)が、学習時間が増加します。
有効な値
正の整数
一般的な値
1~4
デフォルト値
2
num_cells
概要
RNNの隠れ層ごとに使用するセルの数。 多いほど"学習データに対する"予測の精度向上が見込めますが、学習時間が増加します。 また、上記で敢えて"学習データに対する"と記述している通り、多すぎると過適合(over fitting)が発生しやすくなります。
有効な値
正の整数
一般的な値
30~100
デフォルト値
40
epochs
概要
1つのトレーニングデータを学習させる繰り返し回数の最大値。 最適な値は、データサイズと学習レートによって異なります。
有効な値
正の整数
一般的な値
10~1000
デフォルト値
500
likelihood
概要
データに応じて、不確実性予測に使用される適切な尤度(ノイズモデル)を選択します。 これにより予測モデルは確率予測を生成し、分散の変位値を提供してサンプルを返すことができます。
有効な値
- gaussian: 実数値のデータに使用します。
- beta: 0 ~ 1 の範囲内 (0 と 1 を含む) の実数値ターゲットに使用します。
- student-T: バースト性データの実数値データにこの方法を使用します。
- negative-binomial: データ (負ではない整数) の合計に使用します。
- deterministic-L1: 不確実性を予測せず、ポイント予測のみ学習する損失関数。
デフォルト値
student-T
新たに追加になったハイパーパラメータ
新たに追加になったハイパーパラメータは、要約すると学習中に段階的に学習率を減衰させる為のパラメータと複数のモデルの動作を平均化して「良いとこ取り」する為のパラメータです。
learning_rate_decay
概要
学習率の減衰率。 学習中にmax_learning_rate_decaysに設定された回数に応じて学習率を減衰します。 このパラメーターは、max_learning_rate_decaysが0より大きい場合にのみ使用されます。
有効な値
正の浮動小数点数
典型的な値
0.5〜0.8
デフォルト値
0.5
max_learning_rate_decays
概要
学習中に発生する学習率減衰の最大数。 0を設定している場合は、学習中に学習率は減衰されません。
有効な値
正の整数
典型的な値
0〜10
デフォルト値
0
num_averaged_models
概要
設定した数のモデルの動作を平均化して、すべてのモデルの長所を活用できます。
有効な値
正の整数
典型的な値
1〜5
デフォルト値
1
新たに追加になったハイパーパラメータを設定して時系列予測を実行する
新たに追加になったハイパーパラメータを設定して、時系列予測モデルを作成します。 比較の為、ハイパーパラメータがデフォルトのDeepAR+とハイパーパラメータを変更したDeepAR+の予測モデルをそれぞれ作成します。
ハイパーパラメータがデフォルトの予測モデルをfukuoka_influenza_predictor_new_deepar_1
、ハイパーパラメータを変更した予測モデルをfukuoka_influenza_predictor_new_deepar_2
とします。
どちらもAlgorithm Selection
はManual
を選択し、Algorithm
はもちろんDeep_AR_Plus
を選択します。
こちらがデフォルトの設定です。
こちらが変更したハイパーパラメータです。
max_learning_rate_decays
を2に設定しているので、learning_rate_decay
の値に基づいて、最大2回の学習率減衰が発生します。
num_averaged_models
を3で設定しているので、3つのモデルの平均を取ります。
下図が作成された予測モデルの一覧表示です。 このケースでは、デフォルト設定のモデルと比較して、ハイパーパラメータを変更したモデルはMAPE(Mean Absolute Percentage Error, 平均絶対パーセント誤差)の値が改善していることが確認できます。
まとめ
Amazon ForecastのDeepAR+で新たに使用可能になったハイパーパラメータについて、その概要と実際の使用についてご紹介しました。 今回のアップデートにより、Forecastによる時系列予測の実行をさらに効率化し、精度を向上できる可能性が高まりました。